/*******************************************************************************
Paper: Does the Production Approach to Markup Estimation Match a Stylized Fact?
Description: Produces the data for Figure 1c
Author: Tove Forsbacka
Last Updated: 15 February 2026
*******************************************************************************/

* Setup and environment control 
clear
set more off
capture log close 
version 18.5

* Define path and load the data
*cd "PROJECT_PATH"
use "bokslut_clean.dta"

* Merge in data on output elasticity from production function estimation
merge m:1 SNI2007_1 using "outputelasticity.dta"
drop _merge

* Gen variable for firms' markups
gen markup = OUTEL * (dNTOMS/(dPERSKOS+OUTEL*dINTINPUT))
label variable markup "Markup

drop OUTEL dNTOMS dPERSKOS dMATANLSU dINTINPUT

* Keep only the grocery sector
keep if market_grocery

* Markets with Maxi store entry have been manually identify 

* Indicator for year of entry for markets with Maxi store entry
gen maxientry=0
replace maxientry=1 if Kommunnamn=="Borlänge" & year==2004
replace maxientry=1 if Kommunnamn=="Borås" & year==2008
replace maxientry=1 if Kommunnamn=="Bromölla" & year==2009
replace maxientry=1 if Kommunnamn=="Enköping" & year==2005
replace maxientry=1 if Kommunnamn=="Västerås" & year==2006
replace maxientry=1 if Kommunnamn=="Eskilstuna" & year==2007
replace maxientry=1 if Kommunnamn=="Falköping" & year==2013
replace maxientry=1 if Kommunnamn=="Falun" & year==2007
replace maxientry=1 if Kommunnamn=="Halmstad" & year==2002
replace maxientry=1 if Kommunnamn=="Uppsala" & year==2014
replace maxientry=1 if Kommunnamn=="Gävle" & year==2002
replace maxientry=1 if Kommunnamn=="Haparanda" & year==2007
replace maxientry=1 if Kommunnamn=="Hudiksvall" & year==2009
replace maxientry=1 if Kommunnamn=="Åstorp" & year==2003
replace maxientry=1 if Kommunnamn=="Västerås" & year==2001
replace maxientry=1 if Kommunnamn=="Härnösand" & year==2011
replace maxientry=1 if Kommunnamn=="Jönköping" & year==2001
replace maxientry=1 if Kommunnamn=="Karlskoga" & year==2010
replace maxientry=1 if Kommunnamn=="Karlstad" & year==2003
replace maxientry=1 if Kommunnamn=="Katrineholm" & year==2010
replace maxientry=1 if Kommunnamn=="Kristinehamn" & year==2001
replace maxientry=1 if Kommunnamn=="Kumla" & year==2005
replace maxientry=1 if Kommunnamn=="Köping" & year==2011
replace maxientry=1 if Kommunnamn=="Ljungby" & year==2006
replace maxientry=1 if Kommunnamn=="Luleå" & year==2005
replace maxientry=1 if Kommunnamn=="Kävlinge" & year==2000
replace maxientry=1 if Kommunnamn=="Malmö" & year==2000
replace maxientry=1 if Kommunnamn=="Mora" & year==2008
replace maxientry=1 if Kommunnamn=="Nyköping" & year==2010
replace maxientry=1 if Kommunnamn=="Oskarshamn" & year==2006
replace maxientry=1 if Kommunnamn=="Helsingborg" & year==2008
replace maxientry=1 if Kommunnamn=="Sandviken" & year==2007
replace maxientry=1 if Kommunnamn=="Skellefteå" & year==2005
replace maxientry=1 if Kommunnamn=="Sundsvall" & year==2007
replace maxientry=1 if Kommunnamn=="Malmö" & year==2006
replace maxientry=1 if Kommunnamn=="Trelleborg" & year==2001
replace maxientry=1 if Kommunnamn=="Trollhättan" & year==2004
replace maxientry=1 if Kommunnamn=="Vetlanda" & year==2007
replace maxientry=1 if Kommunnamn=="Gotland" & year==2007
replace maxientry=1 if Kommunnamn=="Västervik" & year==2011
replace maxientry=1 if Kommunnamn=="Malmö" & year==2005
replace maxientry=1 if Kommunnamn=="Ängelholm" & year==2003
replace maxientry=1 if Kommunnamn=="Örebro" & year==2007
replace maxientry=1 if Kommunnamn=="Östersund" & year==2009

* Indicator for markets that were always treated (entry before 1997)
gen always=0
replace always=1 if Kommunnamn=="Helsingborg"
replace always=1 if Kommunnamn=="Hässleholm"
replace always=1 if Kommunnamn=="Halmstad"
replace always=1 if Kommunnamn=="Kalmar"
replace always=1 if Kommunnamn=="Karlskrona"
replace always=1 if Kommunnamn=="Kristianstad"
replace always=1 if Kommunnamn=="Linköping"
replace always=1 if Kommunnamn=="Laholm"
replace always=1 if Kommunnamn=="Motala"
replace always=1 if Kommunnamn=="Norrköping"
replace always=1 if Kommunnamn=="Olofström"
replace always=1 if Kommunnamn=="Ronneby"
replace always=1 if Kommunnamn=="Skövde"
replace always=1 if Kommunnamn=="Umeå"
replace always=1 if Kommunnamn=="Örebro"
replace always=1 if Kommunnamn=="Växjö"
replace always=1 if Kommunnamn=="Älmhult"

* Maxi stores have been manually identify 

* Indicator for whether the firm is a maxi store
gen maxi=0
replace maxi=1 if ORGNR==5566971734 & year>=2004
replace maxi=1 if ORGNR==5567295257 & year>=2008
replace maxi=1 if ORGNR==5562036631 & year>=2009
replace maxi=1 if ORGNR==5567279368	& year>=2005
replace maxi=1 if ORGNR==5563658557	& year>=2006
replace maxi=1 if ORGNR==5566321682 & year>=2007
replace maxi=1 if ORGNR==5568591613	& year>=2013
replace maxi=1 if ORGNR==5566794557	& year>=2007
replace maxi=1 if ORGNR==5566706114	& year>=2002
replace maxi=1 if ORGNR==5568149842	& year>=2014
replace maxi=1 if ORGNR==5566644042	& year>=2002
replace maxi=1 if ORGNR==5567234421	& year>=2007
replace maxi=1 if ORGNR==5569101503
replace maxi=1 if ORGNR==5567633275	& year>=2009
replace maxi=1 if ORGNR==5566405733	& year>=2003
replace maxi=1 if ORGNR==5566010822 & year>=2001
replace maxi=1 if ORGNR==5568149867	& year>=2011
replace maxi=1 if ORGNR==5568219405
replace maxi=1 if ORGNR==5568219421
replace maxi=1 if ORGNR==5565902813
replace maxi=1 if ORGNR==5565505681
replace maxi=1 if ORGNR==5567826366	& year>=2010
replace maxi=1 if ORGNR==5565476255
replace maxi=1 if ORGNR==5561736991	& year>=2003
replace maxi=1 if ORGNR==5567900294 & year>=2010
replace maxi=1 if ORGNR==5564958949
replace maxi=1 if ORGNR==5568866668 & year>=2001
replace maxi=1 if ORGNR==5566676200	& year>=2005
replace maxi=1 if ORGNR==5565007571	& year>=2011
replace maxi=1 if ORGNR==5566059647 
replace maxi=1 if ORGNR==5561282780	& year>=2006
replace maxi=1 if ORGNR==5566651203 & year>=2005
replace maxi=1 if ORGNR==5590681879 & year>=2005
replace maxi=1 if ORGNR==5565880266	& year>=2000
replace maxi=1 if ORGNR==5565550448 
replace maxi=1 if ORGNR==5567295067	& year>=2008
replace maxi=1 if ORGNR==5565250403
replace maxi=1 if ORGNR==5563942795
replace maxi=1 if ORGNR==5567410310 & year>=2010
replace maxi=1 if ORGNR==5562155357
replace maxi=1 if ORGNR==5569413791	& year>=2006
replace maxi=1 if ORGNR==5564864501
replace maxi=1 if ORGNR==5567279459	& year>=2008
replace maxi=1 if ORGNR==5566196852 & year>=2007
replace maxi=1 if ORGNR==5567191605	& year>=2007
replace maxi=1 if ORGNR==5568739915	& year>=2005
replace maxi=1 if ORGNR==5590008016
replace maxi=1 if ORGNR==5566859012	& year>=2006
replace maxi=1 if ORGNR==5565838983	& year>=2001
replace maxi=1 if ORGNR==5566574918	& year>=2004
replace maxi=1 if ORGNR==5560932054
replace maxi=1 if ORGNR==5566514724 & year>=2007
replace maxi=1 if ORGNR==5565215414	& year>=2007
replace maxi=1 if ORGNR==5568149396	& year>=2011
replace maxi=1 if ORGNR==5566690458	& year>=2005
replace maxi=1 if ORGNR==5563980894
replace maxi=1 if ORGNR==5565657060
replace maxi=1 if ORGNR==5566188925 & year>=2003
replace maxi=1 if ORGNR==5567633242	& year>=2009
replace maxi=1 if ORGNR==5561880591 & year>=2000
replace maxi=1 if ORGNR==5561832337 & year>=2001
replace maxi=1 if ORGNR==5565962130 & year>=2006
replace maxi=1 if ORGNR==5560218231 
replace maxi=1 if ORGNR==5566059647
replace maxi=1 if ORGNR==5562686724
replace maxi=1 if ORGNR==5561875468
replace maxi=1 if ORGNR==5566697255  & year>=2005	
replace maxi=1 if ORGNR==5565983508
replace maxi=1 if ORGNR==5564983020

* Drop Maxi stores
drop if maxi==1 

* Winsorize markups
winsor2 markup, cuts(5 95) by(year) 
drop markup
rename markup_w markup

* Calculate average markups for local markets
bysort Kommunkod year: egen markup_mean = mean(markup)
drop markup

* Keep only one observation per local market
bysort Kommunkod year: gen dup = _n
drop if dup > 1
drop dup

* Drop markets where there are Maxi entry but their are mistakes in the firms' financial reporting
drop if Kommunnamn=="Jönköping"
drop if Kommunnamn=="Gotland"
drop if Kommunnamn=="Eskilstuna"

* Drop markets that are treated multiple times (there are several Maxi entry)
drop if Kommunnamn=="Västerås"
drop if Kommunnamn=="Halmstad"
drop if Kommunnamn=="Uppsala"
drop if Kommunnamn=="Malmö"
drop if Kommunnamn=="Helsingborg"
drop if Kommunnamn=="Karlstad"
drop if Kommunnamn=="Örebro"

* Drop markets that are 'always treated'
drop if always==1

* Drop rural municipalities with tourism industry
drop if Kommungrupp2017namn=="Landsbygdskommun med besöksnäring"

* Drop the two largest regions (Stockholm and Gothenburg)
drop if stockholm == 1 | goteborg == 1

* Saving the data
save "markups_shock.dta", replace

